/**
 */
package de.thwildau.tm.moses.avro.avdl.util;

import de.thwildau.tm.moses.avro.avdl.AliasAnnotation;
import de.thwildau.tm.moses.avro.avdl.Annotation;
import de.thwildau.tm.moses.avro.avdl.Argument;
import de.thwildau.tm.moses.avro.avdl.ArrayType;
import de.thwildau.tm.moses.avro.avdl.AvdlPackage;
import de.thwildau.tm.moses.avro.avdl.AvroIdl;
import de.thwildau.tm.moses.avro.avdl.BaseTypeRef;
import de.thwildau.tm.moses.avro.avdl.BooleanRef;
import de.thwildau.tm.moses.avro.avdl.ComplexTypeRef;
import de.thwildau.tm.moses.avro.avdl.ConstValue;
import de.thwildau.tm.moses.avro.avdl.DefType;
import de.thwildau.tm.moses.avro.avdl.Definitions;
import de.thwildau.tm.moses.avro.avdl.DoubleRef;
import de.thwildau.tm.moses.avro.avdl.EnumFields;
import de.thwildau.tm.moses.avro.avdl.Field;
import de.thwildau.tm.moses.avro.avdl.FieldType;
import de.thwildau.tm.moses.avro.avdl.FixedLengthField;
import de.thwildau.tm.moses.avro.avdl.HexRef;
import de.thwildau.tm.moses.avro.avdl.ImportTypeRef;
import de.thwildau.tm.moses.avro.avdl.Imports;
import de.thwildau.tm.moses.avro.avdl.IntRef;
import de.thwildau.tm.moses.avro.avdl.JavaclassAnnotation;
import de.thwildau.tm.moses.avro.avdl.MapType;
import de.thwildau.tm.moses.avro.avdl.Name;
import de.thwildau.tm.moses.avro.avdl.NamespaceAnnotation;
import de.thwildau.tm.moses.avro.avdl.NumberRef;
import de.thwildau.tm.moses.avro.avdl.OrderAnnotation;
import de.thwildau.tm.moses.avro.avdl.Protocol;
import de.thwildau.tm.moses.avro.avdl.RPCMessage;
import de.thwildau.tm.moses.avro.avdl.Record;
import de.thwildau.tm.moses.avro.avdl.ReturnType;
import de.thwildau.tm.moses.avro.avdl.StringRef;
import de.thwildau.tm.moses.avro.avdl.Throws;
import de.thwildau.tm.moses.avro.avdl.UnionFieldType;
import de.thwildau.tm.moses.avro.avdl.UnionType;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see de.thwildau.tm.moses.avro.avdl.AvdlPackage
 * @generated
 */
public class AvdlSwitch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static AvdlPackage modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public AvdlSwitch()
  {
    if (modelPackage == null)
    {
      modelPackage = AvdlPackage.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @parameter ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case AvdlPackage.AVRO_IDL:
      {
        AvroIdl avroIdl = (AvroIdl)theEObject;
        T result = caseAvroIdl(avroIdl);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.PROTOCOL:
      {
        Protocol protocol = (Protocol)theEObject;
        T result = caseProtocol(protocol);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.DEFINITIONS:
      {
        Definitions definitions = (Definitions)theEObject;
        T result = caseDefinitions(definitions);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.ERROR:
      {
        de.thwildau.tm.moses.avro.avdl.Error error = (de.thwildau.tm.moses.avro.avdl.Error)theEObject;
        T result = caseError(error);
        if (result == null) result = caseDefinitions(error);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.RECORD:
      {
        Record record = (Record)theEObject;
        T result = caseRecord(record);
        if (result == null) result = caseDefinitions(record);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.FIELD:
      {
        Field field = (Field)theEObject;
        T result = caseField(field);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.ENUM:
      {
        de.thwildau.tm.moses.avro.avdl.Enum enum_ = (de.thwildau.tm.moses.avro.avdl.Enum)theEObject;
        T result = caseEnum(enum_);
        if (result == null) result = caseDefinitions(enum_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.ENUM_FIELDS:
      {
        EnumFields enumFields = (EnumFields)theEObject;
        T result = caseEnumFields(enumFields);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.FIXED_LENGTH_FIELD:
      {
        FixedLengthField fixedLengthField = (FixedLengthField)theEObject;
        T result = caseFixedLengthField(fixedLengthField);
        if (result == null) result = caseDefinitions(fixedLengthField);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.IMPORTS:
      {
        Imports imports = (Imports)theEObject;
        T result = caseImports(imports);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.RPC_MESSAGE:
      {
        RPCMessage rpcMessage = (RPCMessage)theEObject;
        T result = caseRPCMessage(rpcMessage);
        if (result == null) result = caseDefinitions(rpcMessage);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.NAME:
      {
        Name name = (Name)theEObject;
        T result = caseName(name);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.RETURN_TYPE:
      {
        ReturnType returnType = (ReturnType)theEObject;
        T result = caseReturnType(returnType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.THROWS:
      {
        Throws throws_ = (Throws)theEObject;
        T result = caseThrows(throws_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.ARGUMENT:
      {
        Argument argument = (Argument)theEObject;
        T result = caseArgument(argument);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.ANNOTATION:
      {
        Annotation annotation = (Annotation)theEObject;
        T result = caseAnnotation(annotation);
        if (result == null) result = caseDefinitions(annotation);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.ALIAS_ANNOTATION:
      {
        AliasAnnotation aliasAnnotation = (AliasAnnotation)theEObject;
        T result = caseAliasAnnotation(aliasAnnotation);
        if (result == null) result = caseAnnotation(aliasAnnotation);
        if (result == null) result = caseDefinitions(aliasAnnotation);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.ORDER_ANNOTATION:
      {
        OrderAnnotation orderAnnotation = (OrderAnnotation)theEObject;
        T result = caseOrderAnnotation(orderAnnotation);
        if (result == null) result = caseAnnotation(orderAnnotation);
        if (result == null) result = caseDefinitions(orderAnnotation);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.NAMESPACE_ANNOTATION:
      {
        NamespaceAnnotation namespaceAnnotation = (NamespaceAnnotation)theEObject;
        T result = caseNamespaceAnnotation(namespaceAnnotation);
        if (result == null) result = caseAnnotation(namespaceAnnotation);
        if (result == null) result = caseDefinitions(namespaceAnnotation);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.JAVACLASS_ANNOTATION:
      {
        JavaclassAnnotation javaclassAnnotation = (JavaclassAnnotation)theEObject;
        T result = caseJavaclassAnnotation(javaclassAnnotation);
        if (result == null) result = caseAnnotation(javaclassAnnotation);
        if (result == null) result = caseDefinitions(javaclassAnnotation);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.DEF_TYPE:
      {
        DefType defType = (DefType)theEObject;
        T result = caseDefType(defType);
        if (result == null) result = caseUnionFieldType(defType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.BASE_TYPE_REF:
      {
        BaseTypeRef baseTypeRef = (BaseTypeRef)theEObject;
        T result = caseBaseTypeRef(baseTypeRef);
        if (result == null) result = caseDefinitions(baseTypeRef);
        if (result == null) result = caseReturnType(baseTypeRef);
        if (result == null) result = caseFieldType(baseTypeRef);
        if (result == null) result = caseUnionFieldType(baseTypeRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.COMPLEX_TYPE_REF:
      {
        ComplexTypeRef complexTypeRef = (ComplexTypeRef)theEObject;
        T result = caseComplexTypeRef(complexTypeRef);
        if (result == null) result = caseDefinitions(complexTypeRef);
        if (result == null) result = caseFieldType(complexTypeRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.NUMBER_REF:
      {
        NumberRef numberRef = (NumberRef)theEObject;
        T result = caseNumberRef(numberRef);
        if (result == null) result = caseConstValue(numberRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.INT_REF:
      {
        IntRef intRef = (IntRef)theEObject;
        T result = caseIntRef(intRef);
        if (result == null) result = caseNumberRef(intRef);
        if (result == null) result = caseConstValue(intRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.HEX_REF:
      {
        HexRef hexRef = (HexRef)theEObject;
        T result = caseHexRef(hexRef);
        if (result == null) result = caseNumberRef(hexRef);
        if (result == null) result = caseConstValue(hexRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.DOUBLE_REF:
      {
        DoubleRef doubleRef = (DoubleRef)theEObject;
        T result = caseDoubleRef(doubleRef);
        if (result == null) result = caseNumberRef(doubleRef);
        if (result == null) result = caseConstValue(doubleRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.BOOLEAN_REF:
      {
        BooleanRef booleanRef = (BooleanRef)theEObject;
        T result = caseBooleanRef(booleanRef);
        if (result == null) result = caseConstValue(booleanRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.STRING_REF:
      {
        StringRef stringRef = (StringRef)theEObject;
        T result = caseStringRef(stringRef);
        if (result == null) result = caseConstValue(stringRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.IMPORT_TYPE_REF:
      {
        ImportTypeRef importTypeRef = (ImportTypeRef)theEObject;
        T result = caseImportTypeRef(importTypeRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.FIELD_TYPE:
      {
        FieldType fieldType = (FieldType)theEObject;
        T result = caseFieldType(fieldType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.ARRAY_TYPE:
      {
        ArrayType arrayType = (ArrayType)theEObject;
        T result = caseArrayType(arrayType);
        if (result == null) result = caseComplexTypeRef(arrayType);
        if (result == null) result = caseDefinitions(arrayType);
        if (result == null) result = caseFieldType(arrayType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.MAP_TYPE:
      {
        MapType mapType = (MapType)theEObject;
        T result = caseMapType(mapType);
        if (result == null) result = caseComplexTypeRef(mapType);
        if (result == null) result = caseDefinitions(mapType);
        if (result == null) result = caseFieldType(mapType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.UNION_TYPE:
      {
        UnionType unionType = (UnionType)theEObject;
        T result = caseUnionType(unionType);
        if (result == null) result = caseField(unionType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.UNION_FIELD_TYPE:
      {
        UnionFieldType unionFieldType = (UnionFieldType)theEObject;
        T result = caseUnionFieldType(unionFieldType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case AvdlPackage.CONST_VALUE:
      {
        ConstValue constValue = (ConstValue)theEObject;
        T result = caseConstValue(constValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Avro Idl</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Avro Idl</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAvroIdl(AvroIdl object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Protocol</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Protocol</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProtocol(Protocol object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Definitions</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Definitions</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDefinitions(Definitions object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Error</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Error</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseError(de.thwildau.tm.moses.avro.avdl.Error object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Record</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Record</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRecord(Record object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Field</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Field</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseField(Field object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Enum</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Enum</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEnum(de.thwildau.tm.moses.avro.avdl.Enum object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Enum Fields</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Enum Fields</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEnumFields(EnumFields object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Fixed Length Field</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Fixed Length Field</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFixedLengthField(FixedLengthField object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Imports</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Imports</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseImports(Imports object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RPC Message</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RPC Message</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRPCMessage(RPCMessage object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Name</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Name</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseName(Name object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Return Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Return Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseReturnType(ReturnType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Throws</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Throws</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseThrows(Throws object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Argument</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Argument</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseArgument(Argument object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Annotation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Annotation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAnnotation(Annotation object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Alias Annotation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Alias Annotation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAliasAnnotation(AliasAnnotation object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Order Annotation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Order Annotation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOrderAnnotation(OrderAnnotation object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Namespace Annotation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Namespace Annotation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamespaceAnnotation(NamespaceAnnotation object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Javaclass Annotation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Javaclass Annotation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseJavaclassAnnotation(JavaclassAnnotation object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Def Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Def Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDefType(DefType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Base Type Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Base Type Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBaseTypeRef(BaseTypeRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Complex Type Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Complex Type Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseComplexTypeRef(ComplexTypeRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Number Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Number Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNumberRef(NumberRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Int Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Int Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIntRef(IntRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Hex Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Hex Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseHexRef(HexRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Double Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Double Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDoubleRef(DoubleRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Boolean Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Boolean Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBooleanRef(BooleanRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>String Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>String Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStringRef(StringRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Import Type Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Import Type Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseImportTypeRef(ImportTypeRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Field Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Field Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFieldType(FieldType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Array Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Array Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseArrayType(ArrayType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Map Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Map Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMapType(MapType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Union Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Union Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnionType(UnionType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Union Field Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Union Field Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnionFieldType(UnionFieldType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Const Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Const Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstValue(ConstValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //AvdlSwitch
